home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 173 / 173.xpi / chrome / gm-notifier.jar / content / gm-notifier / gm-prefs.js < prev    next >
Text File  |  2009-09-28  |  7KB  |  200 lines

  1. function gm_prefs() {
  2.   this.prefBranch = null;
  3.  
  4.   // pref values
  5.   this.PREF_STATUSBAR_ENABLED     = "gm-notifier.sidebar.enabled"; // oops, sidebar?
  6.   this.PREF_UPDATE_INTERVAL       = "gm-notifier.update.interval";
  7.   this.PREF_LOAD_LOCATION         = "gm-notifier.loadgm.location";
  8.   this.PREF_LOAD_RESET_COUNTER    = "gm-notifier.loadgm.reset_counter";
  9.   this.PREF_AUTOLOGIN_ENABLED     = "gm-notifier.autologin.enabled";
  10.   this.PREF_NOTIFICATIONS_ENABLED = "gm-notifier.ui.notification.enabled";
  11.   this.PREF_SOUNDNOTIFICATIONS_ENABLED = "gm-notifier.ui.soundnotification.enabled";
  12.   this.PREF_SOUNDNOTIFICATIONS_URI = "gm-notifier.ui.soundnotification.uri";
  13.   this.PREF_DEFAULT_USER          = "gm-notifier.users.default";
  14.   this.PREF_REMEMBER_PASSWORD     = "gm-notifier.users.remember-password";
  15.   this.PREF_IS_LOGGED_IN          = "gm-notifier.loggedin";
  16.   this.PREF_USE_FOLDERVIEW        = "gm-notifier.ui.folderview";
  17.   this.PREF_COUNTER_SHOW_INBOX    = "gm-notifier.ui.counter.showInbox";
  18.   this.PREF_STATUSBAR_POSITION    = "gm-notifier.ui.statusbar.position";
  19.   this.PREF_UNSECURED_CONNECTION  = "gm-notifier.connection.use.unsecured";
  20.   this.PREF_MULTIACCOUNT_ENABLED  = "gm-notifier.multiaccount.enabled";
  21.   this.PREF_NOTIFICATIONS_REPEAT  = "gm-notifier.notification.repeat";
  22.  
  23.   // "hidden" prefs
  24.   this.PREF_DISABLE_TAB_REUSE = "gm-notifier.tabreuse.disable";
  25.   this.PREF_USE_GMAIL_1_0 = "gm-notifier.loadgm.oldgmail";
  26. }
  27.  
  28. gm_prefs.prototype.getPrefBranch = function() {
  29.   if (!this.prefBranch){ 
  30.     this.prefBranch = Components.classes['@mozilla.org/preferences-service;1'].getService();
  31.     this.prefBranch = this.prefBranch.QueryInterface(Components.interfaces.nsIPrefBranch);
  32.   }
  33.  
  34.   return this.prefBranch;
  35. }
  36.  
  37. gm_prefs.prototype.setBoolPref = function(aName, aValue) {
  38.   try {
  39.     this.getPrefBranch().setBoolPref(aName, aValue);
  40.   } catch (e) {}
  41. }
  42.  
  43. gm_prefs.prototype.getBoolPref = function(aName) {
  44.   var rv = null;
  45.  
  46.   try {
  47.     rv = this.getPrefBranch().getBoolPref(aName);
  48.   } catch (e) {}
  49.  
  50.   return rv;
  51. }
  52.  
  53. gm_prefs.prototype.setIntPref = function(aName, aValue) {
  54.   try {
  55.     this.getPrefBranch().setIntPref(aName, aValue);
  56.   } catch (e) {}
  57. }
  58.  
  59. gm_prefs.prototype.getIntPref = function(aName) {
  60.   var rv = null;
  61.  
  62.   try {
  63.     rv = this.getPrefBranch().getIntPref(aName);
  64.   } catch (e){
  65.   }
  66.  
  67.   return rv;
  68. }
  69.  
  70. gm_prefs.prototype.setCharPref = function(aName, aValue) {
  71.   this.getPrefBranch().setCharPref(aName, aValue);
  72. }
  73.  
  74. gm_prefs.prototype.getCharPref = function(aName) {
  75.   var rv = null;
  76.  
  77.   try {
  78.     rv = this.getPrefBranch().getCharPref(aName);
  79.   } catch (e){
  80.  
  81.   }
  82.  
  83.   return rv;
  84. }
  85.  
  86. gm_prefs.prototype.addObserver = function(aDomain, aFunction) {
  87.   var myPrefs = this.getPrefBranch();
  88.   var prefBranchInternal = myPrefs.QueryInterface(Components.interfaces.nsIPrefBranchInternal);
  89.  
  90.   if (prefBranchInternal)
  91.     prefBranchInternal.addObserver(aDomain, aFunction, false);
  92. }
  93.  
  94. gm_prefs.prototype.removeObserver = function(aDomain, aFunction) {
  95.   var myPrefs = this.getPrefBranch();
  96.   var prefBranchInternal = myPrefs.QueryInterface(Components.interfaces.nsIPrefBranchInternal);
  97.  
  98.   if (prefBranchInternal)
  99.     prefBranchInternal.removeObserver(aDomain, aFunction);
  100. }
  101.  
  102. gm_prefs.prototype.initPrefs = function() {
  103.   // migrate preferences
  104.   var arePrefsUpToDate = this.getBoolPref(this.PREF_NOTIFICATIONS_REPEAT);
  105.   if (arePrefsUpToDate == null) {
  106.     // set prefs if they don't exit
  107.     this.initPref(this.PREF_STATUSBAR_ENABLED , "bool", true);
  108.     this.initPref(this.PREF_UPDATE_INTERVAL, "int", 10);
  109.     this.initPref(this.PREF_DEFAULT_USER, "char", "");
  110.     this.initPref(this.PREF_REMEMBER_PASSWORD, "bool", false);
  111.     this.initPref(this.PREF_LOAD_LOCATION, "int", 0);
  112.     this.initPref(this.PREF_LOAD_RESET_COUNTER, "bool", false);
  113.     this.initPref(this.PREF_AUTOLOGIN_ENABLED, "bool", false);
  114.     this.initPref(this.PREF_IS_LOGGED_IN, "bool", false);
  115.     this.initPref(this.PREF_NOTIFICATIONS_ENABLED, "bool", true);
  116.     this.initPref(this.PREF_SOUNDNOTIFICATIONS_ENABLED, "bool", false);
  117.     this.initPref(this.PREF_DEBUG_CONSOLE_ENABLED, "bool", false);
  118.     this.initPref(this.PREF_USE_FOLDERVIEW, "bool", false);
  119.     this.initPref(this.PREF_COUNTER_SHOW_INBOX, "bool", true);
  120.     this.initPref(this.PREF_STATUSBAR_POSITION, "int", 0);
  121.     this.initPref(this.PREF_UNSECURED_CONNECTION, "bool", false);
  122.     this.initPref(this.PREF_MULTIACCOUNT_ENABLED, "bool", false);
  123.     this.initPref(this.PREF_NOTIFICATIONS_REPEAT, "bool", false);
  124.   }
  125. }
  126.  
  127. gm_prefs.prototype.initAccounts = function() {
  128.   var areAccountsMigrated = this.getBoolPref("gm-notifier.userlistmigrated");
  129.   // XXX: remove
  130.   dump("\n are accounts migrated: " + (areAccountsMigrated == null ? "no" : "yes")+"\n");
  131.   if (areAccountsMigrated == null) {
  132.     var host = "chrome://gm-notifier/";
  133.     var pm = Components.classes["@mozilla.org/passwordmanager;1"]
  134.                         .createInstance(Components.interfaces.nsIPasswordManager);
  135.     // we create a pref list from the stores passwords list
  136.     // gm-notifier.userlist.[username].{autologin, isloggedin}
  137.     var enumerator = pm.enumerator;
  138.     var user, password;
  139.  
  140.     while (enumerator.hasMoreElements()) {
  141.       var nextPassword;
  142.       try {
  143.         nextPassword = enumerator.getNext();
  144.       } catch(e) {
  145.         break;
  146.       }
  147.       nextPassword = nextPassword.QueryInterface(Components.interfaces.nsIPassword);
  148.       var nextHost = nextPassword.host;
  149.  
  150.       if (nextHost == host) {
  151.         // try/catch in case decryption fails (invalid signon entry)
  152.         try {
  153.           user = nextPassword.user;
  154.           password = nextPassword.password;
  155.           this.setBoolPref("gm-notifier.userlist." + user + ".autologin", false);
  156.           this.setBoolPref("gm-notifier.userlist." + user + ".loggedin", false);
  157.         } catch (e) {
  158.           continue;
  159.         }
  160.       }
  161.     }
  162.  
  163.     // we migrated!
  164.     this.setBoolPref("gm-notifier.userlistmigrated", true);
  165.   }
  166. }
  167.  
  168. gm_prefs.prototype.initPref = function(aPrefName, aPrefType, aDefaultValue) {
  169.   switch (aPrefType) {
  170.     case "bool" :
  171.       var prefExists = this.getBoolPref(aPrefName);
  172.       if (prefExists == null)
  173.         this.setBoolPref(aPrefName, aDefaultValue);
  174.       break;
  175.  
  176.     case "int" :
  177.       var prefExists = this.getIntPref(aPrefName);
  178.       if (prefExists == null)
  179.         this.setIntPref(aPrefName, aDefaultValue);
  180.       break;
  181.  
  182.     case "char" :
  183.       var prefExists = this.getCharPref(aPrefName);
  184.       if (prefExists == null)
  185.         this.setCharPref(aPrefName, aDefaultValue);
  186.       break;
  187.   }
  188. }
  189.  
  190. gm_prefs.prototype.clearPref = function(aPrefName) {
  191.   var rv = null;
  192.  
  193.   try{
  194.     rv = this.getPrefBranch().clearUserPref(aPrefName);
  195.   } catch (e) {
  196.   }
  197.  
  198.   return rv;
  199. }
  200.